Universal Plug and Play (UPnP™) defines an architecture for the network connectivity of intelligent consumer electronics, wireless devices, printers, and PCs of all form factors. The goal of UPnP technology is to provide easy-to-use, flexible, standards-based connectivity for ad-hoc or unmanaged networks whether in a home, in a small business, or in public spaces. In support of this goal, UPnP supports zero-configuration, “invisible” networking, and the automatic discovery of devices from a wide range of manufacturers. As a result, a device can dynamically join a network, obtain an IP address, convey its capabilities to the network, and determine the presence and capabilities of other devices. UPnP also provides a consistent, interoperable framework for remote Internet Gateway Device (IGD) configuration and management. UPnP is built using Hypertext Transfer Protocol (HTTP) over the User Datagram Protocol/Internet Protocol (UDP/IP) or the Transmission Control Protocol/Internet Protocol (TCP/IP) in addition to the eXtensible Markup Language (XML). HTTPU and HTTPMU are variants of HTTP defined to deliver messages over UDP/IP instead of TCP/IP.
Devices on a UPnP network can be connected using any communication media including Radio Frequency wireless (including Radio Frequency IDentification (RFID)), phone line, power line, IrDA, Ethernet, and Institute of Electrical and Electronics Engineers (IEEE) 1394. Thus, any communication medium that can be used to network devices can enable UPnP.
UPnP is an open networking architecture that consists of services, devices, and control points. Services are groups of states and actions. For example, a light switch has an “on” state and an “off” state. An action allows the network to determine the state of the switch or to change the state of the switch and is a command that can be used to trigger services to perform a function. Services typically reside in devices and provide device functionality that can be controlled using control points. A device may be a physical device such as a camcorder or a logical device such as a computer that is performing the functions of a camcorder. Devices may be physical or logical entities and are specified using simple XML descriptions and containing Application Programming Interfaces (APIs) for providing services. Physical devices may host multiple logical devices, and each device may host multiple services. Control points are software applications that retrieve UPnP service and device descriptions, that send actions to services, and that receive events from services. A control point is capable of discovering and controlling other devices. An event is a message from a device to a control point that is used to keep subscribed control points informed of device status. A UPnP device may be a container for services and nested devices. For example, a combination TV/DVD player provides services and includes a nested device that may be the DVD player, for example.
Messages are transported over UPnP networks using HTTP over the UDP/IP or TCP/IP. The supported message formats are Simple Service Discovery Protocol (SSDP), General Event Notification Architecture (GENA), and Simple Object Access Protocol (SOAP). UPnP relies on these three protocols to enable networking without a classical network administrator. SSDP provides for the discovery of devices on the network. GENA provides for subscribing to event reports and for the publication of those events. SOAP provides for control of the network devices through remote procedure calls between control points and devices. Required UPnP information is inserted into all messages before they are formatted using SSDP, GENA, and SOAP and delivered via HTTP, HTTPU, or HTTPMU.
Given an IP address, the first step in UPnP networking is discovery. The discovery process for a UPnP device includes advertisement of the device presence on the network to other devices and control points using SSDP. Thus, when a device is added to a network, the device advertises its services to the control points on the network. Similarly, a new control point discovers UPnP devices on a network using SSDP. If an SSDP service hears a discovery request that matches a service that it offers then the service responds to the control point. Thus, UPnP allows a control point to search for devices of interest on the network.
The information exchanged between the device and the control point in both cases is a discovery message that provide basic information about the devices or one of its services, and a description Uniform Resource Locator (URL) that can be used to gather additional detailed information about the device. XML is used to describe the device features and capabilities. The notification announcement message URL points to an XML file in the network that contains a description of the UPnP device's capability. Thus, by retrieving the XML file, other devices can evaluate the features of the device and determine if the features satisfy their requirements. Thus, after a control point discovers a device, the control point retrieves the device's service description from the URL provided by the device in the discovery message. The UPnP description for a device includes a list of any embedded devices or service, as well as URLs for control, for eventing, and for presentation.
The UPnP description for a service includes a list of actions the service responds to and a list of variables that model the state of the service. The service publishes updates when these variables change by sending event messages. A control point may subscribe to this information so that it automatically receives the updates. Event messages contain the names of one of more state variables and the current value of those variables. These messages are also expressed in XML and formatted using GENA. Thus, after retrieving the description of the device, the control point can send actions to a device's service by sending a suitable control message to the control URL for the service.
Control messages are also expressed in XML using SOAP. In response to the control message, the service returns any action-specific values. Additionally, if a device has a URL for presentation, the control point can retrieve a page from this URL, load the page into a browser, and depending on the capabilities of the page, allow a user to control the device and/or view device status. Each UPnP control request is a SOAP message that contains the action to invoke along with a set of parameters. The response is a soap message as well and contains the status, return value, and any return parameters. The control point can refine the search to find only devices of a particular type, that perform particular services, or a specific device. The control point can not, however, refine the search based on context information. Context information includes additional information about the device and the services that the device is capable of providing. For example, the context information may include the current geographic location of the device. Context information may include the device availability for example if the device is a printer or a facsimile machine.
What is needed, therefore, is a method of including context information to refine a search for a device or a search for an item at a device in a UPnP environment. What is further needed is a method of including the existence of context information to refine a search for a device in a UPnP environment.